哇!轉眼間來到第五天了,廢廢我已經順利寫過了鐵人賽的1/6的時程,加油衝衝衝
今天要做的筆記是
當computer要執行時高階語言,無法直接執行需要轉譯成機器語言。
step 1.高階語言會先compiler成組合語言。
step 2.接著被assembler組譯成機器語言。
step 3.再將object file由linker整理成執行檔(executable file)。
step 4.最後將執行檔裡的資料copy至適當的記憶體位址。
大致示意圖:
linker決定資料與指令的位址並決定內外部的位址參考。
1.讀取執行檔的header來決定程式碼與資料區的大小。
2.並以此來產生足夠容納資料與程式碼的記憶體空間。
3.將資料copy至記憶體。
4.接著複製主程式的parameter至stack(argument放到local variable)。
5.初始化暫存器並將stack指標設定在第一個可用空間。
6.(這裡由os掌控)跳至start-up routine(啟動常式)呼叫要被執行的主程式,當主程式結束返回時,使用exit來結束執行並釋放硬體資源。
以下為載入器的流程示意圖: